In computer science, Reo is a channel-based exogenous coordination language.
Contents |
In the context of distributed application, correction and validity of single processes does not imply the correctness of the whole system. In such systems, the communication between the processes is of a high importance. These communications can be implemented within the process but the maintenance of such built-in communications can be a problem. However, communications and interactions protocols can be specified using coordination languages.
Reo is a coordination language designed and proposed by Farhad Arbab at Centrum Wiskunde & Informatica in 2001. The first formal semantics of Reo was developed by Farhad Arbab and Jan Rutten in terms of a coalgebraic model of streams. Christel Baier et al. introduced Constraint Automata to express the operational semantics of Reo. Reo constitutes a strategic long-term research activity of the SEN3 research group at the Centre for Mathematics and Computer Science (CWI).
A typical Reo model consists of connectors. A more complex connector can be built up using simpler connectors. In each channel there exist a number of Channels and Nodes.[1] Two nodes communicate through a channel which has two ends. A channel end can be source or sink depending on accepting or dispensing data into / out of its channel. The behaviour of a channel specifies how the channel affect the data flow through its ends which defined by its type. An effect of this type can be , for example, the content, the conditions for loss, and/or creation of data go through the channel ends, or the atomicity, exclusion, order, and/or timing of their passage. There is no limitation on the behaviour of a channel. Therefore, new types of channels can be used simultaneously with other channels in a model.[2]
The current implementation of Reo tool is developed in the Scala programming language, and runs on JVM (Java). A more detailed description, with the code, examples, and documentation, can be found in the Reo tool web page.
Animating the Reo circuit is a good way to better understanding its behaviour. Such examples can be found in A repository of Reo Connectors.
Reo models can be checked using model checker Vereofy and the mCRL2 toolset.